// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	11/5/2014 6:24:49 PM				
// -----------------------------

#ifndef _LSystem_h
#define _LSystem_h

#include "Common.h"

class LSystem
{
public:
	LSystem();
	~LSystem();

	void		AddRule(const AString& input, const AString& output, UInt32 importance = 1);
	AString		Evaluate(const AString& input, UInt32 steps);

private:
	typedef multimap<AString, AString> RuleMap;

	AString		EvaluateSingle(const AString& input);

	RuleMap	m_Rules;

	LSystem(const LSystem& refLSystem);
	LSystem& operator=(const LSystem& refLSystem);
};

#endif